#include "bsp_gpt.h"
void gpt_en(GPT_Type* gpt, int status)
{
    GPTx_CR_t *cr = (GPTx_CR_t*)& gpt->CR;
    cr->EN = status;
}
void gpt_init(GPT_Type* gpt, uint32_t prescaler, uint32_t ocr)
{
    GPTx_CR_t *cr = (GPTx_CR_t*)& gpt->CR;
    cr->full = 0;
    cr->SWR = 1; // 软复位
    while(cr->SWR);

    cr->FRR = 0; // restart mode
    cr->CLKSRC = 1; // ipg clk
    GPTx_PR_t* pr = (GPTx_PR_t*)&gpt->PR;
    pr->PRESCALER = prescaler; // 分频
    gpt->OCR[0] = ocr; // 只有通道1支持restart模式
    gpt_en(gpt, 1);
}
void gpt_irq_init(GPT_Type* gpt, IRQn_Type nirq, system_irq_handler_t irq_handler, void* args)
{
    GIC_EnableIRQ(nirq);
    system_register_irqhandler(nirq, irq_handler, args);
    gpt->IR |= 1 << 0;
}


